package com.qytx.tloos;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;


public class ParseXml{

	/**读取游戏配置文件*/
	public void ParseXml0() {
        // 进行对books.xml文件的JDOM解析
         //❤准备工作
         // 1.创建一个SAXBuilder的对象
        SAXBuilder saxBuilder = new SAXBuilder();//注意SAXBuilder是org.jdom2.input包下的
         InputStream in;
         try {
             // 2.创建一个输入流，将xml文件加载到输入流中
             in=new FileInputStream("D:\\packaging\\shell_pack\\configura\\game.xml");//如果将xml文件放在src/res包下，此时应该输入“src/res/books.xml”
             InputStreamReader isr = new InputStreamReader(in, "UTF-8");//使用包装流InputStreamReader进行读取编码的指定，防止乱码
             // 3.通过saxBuilder的build方法，将输入流加载到saxBuilder中
             Document document = saxBuilder.build(isr);
             // 4.通过document对象获取xml文件的根节点
             Element rootElement = document.getRootElement();
             // 5.获取根节点下的子节点的List集合
             List<Element> bookList = rootElement.getChildren();
             //❤ 继续解析，采用for循环对bookList进行遍历
             for (Element book : bookList) {
                 
                 System.out.println("======开始解析第" + (bookList.indexOf(book) + 1) + "个游戏======");//indexOf()返回的是index的位置，是从0开始
                 // 解析book的属性集合
                 List<Attribute> attrList = book.getAttributes();//适用于未知属性情况下
                 
                 ///知道节点下属性名称时，获取节点值
//                 Game game=new Game(	book.getAttributeValue("packName"),
//                         		book.getAttributeValue("iconName"),
//                         		book.getAttributeValue("fileName"),
//                         		book.getAttributeValue("appName"),
//                         		book.getAttributeValue("iconPath"));
//
//                 Data.GameMap.put(game.getAppName(), game);
                 // 遍历attrList(针对不清楚book节点下属性的名字及数量)
                 for (Attribute attr : attrList) {
                     /**注：JDom中，Attribute的getName和getValue方法获取到的都是实际的名称和值，
                      * 不会出现SAX和DOM中的空格和换行的情况*/
                	 
                	 
                     // 获取属性名
                     String attrName = attr.getName();
                     // 获取属性值
                     String attrValue = attr.getValue();
                     System.out.println("属性名：" + attrName + "----属性值：" + attrValue);
                     
                 }
                 
                 //❤对book节点的子节点的节点名以及节点值的遍历
 //                List<Element> bookChilds = book.getChildren();
 
                 System.out.println("======结束解析第" + (bookList.indexOf(book) + 1) + "个游戏======");

                 

 
             }
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (JDOMException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
         
     }
	
//	/**读取游戏配置文件*/
//	public ParseXml() {
//        // 进行对books.xml文件的JDOM解析
//         //准备工作
//         // 创建一个SAXBuilder的对象
//        SAXBuilder saxBuilder = new SAXBuilder();//注意SAXBuilder是org.jdom2.input包下的
//         InputStream in;
//         try {
//             //创建一个输入流，将xml文件加载到输入流中
//             in=new FileInputStream("D:\\packaging\\shell_pack\\configura\\game.xml");//如果将xml文件放在src/res包下，此时应该输入“src/res/books.xml”
//             InputStreamReader isr = new InputStreamReader(in, "UTF-8");//使用包装流InputStreamReader进行读取编码的指定，防止乱码
//             //通过saxBuilder的build方法，将输入流加载到saxBuilder中
//             Document document = saxBuilder.build(isr);
//             //通过document对象获取xml文件的根节点
//             Element rootElement = document.getRootElement();
//             //获取根节点下的子节点的List集合
//             List<Element> e = rootElement.getChildren();
//             //继续解析，采用for循环对bookList进行遍历
//             for (Element element : e) {
//            	 List<Element> el = element.getChildren();
//            	 Game game=new Game();
//            	 
//            	 for(Element ele : el){
//            		 System.out.println(ele.getName()+"-----"+ele.getText());
//            	 }
//            	 if(el.size()==7){
//            		 game.setPackName(el.get(0).getText());
//            		 System.out.println(game.getPackName());
//            		 game.setIconName(el.get(1).getText());
//            		 System.out.println(game.getIconName());
//            		 game.setFileName(el.get(2).getText());
//            		 System.out.println(game.getFileName());
//            		 game.setAppName(el.get(3).getText());
//            		 System.out.println(game.getAppName());
//            		 game.setNormal(el.get(4).getText());
//            		 System.out.println(game.isNormal());
//            		 game.setNewPack(el.get(5).getText());
//            		 System.out.println(game.getNewPack());
//            		 game.setIconPath(el.get(6).getText());
//            		 System.out.println(game.getIconPath());
//            	 }
//            	 Data.GameMap.put(element.getAttributeValue("name"), game);
//            	 
//            	 System.out.println(Data.GameMap.size());
//                
//             }
//         } catch (FileNotFoundException e) {
//             e.printStackTrace();
//         } catch (JDOMException e) {
//             e.printStackTrace();
//         } catch (IOException e) {
//             e.printStackTrace();
//         }
//         
//     }
	

}